/* 
 *  FileName: globalfifo.h - For globalfifo.c
 *
 *  Author: He Jingbo   jbhe@isoftstone.com
 *
 *  Date: Thu 30 Dec 2010 09:43:25 AM CST
 */

#ifndef __GLOBALFIFO_H__
#define __GLOBALFIFO_H__

#include <linux/cdev.h>
#include <linux/wait.h>

#define DEV_COUNT       2               /* 同类型设备个数 */
#define GLOBALFIFO_SIZE 0x1000          /* 全局内存大小4KB */
#define MEM_CLEAR       0x1             /* 清零全局内存 */
#define GLOBALMEM_MAJOR 0               /* 预设globalfifo的主设备号 */

/* globalfifo设备结构体 */
struct globalfifo_dev
{
    struct cdev cdev;                   /* cdev结构体 */
    struct semaphore sem;               /* 并发控制用的信号量 */
    unsigned int current_len;           /* fifo有效数据长度 */
    unsigned char mem[GLOBALFIFO_SIZE]; /* 全局内存 */

    wait_queue_head_t r_wait;           /* 阻塞读用的等待队列头 */
    wait_queue_head_t w_wait;           /* 阻塞写用的等待队列头 */

    struct fasync_struct *async_queue;  /* 异步结构体指针,用于读 */
};
#endif  /*__GLOBALMEM_H__*/
